package generar_factura_paciente;

import java.util.List;
import javax.swing.table.DefaultTableModel;
import dtos.DTOFichaInternacion;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JOptionPane;

public class IUMostrarFichasPendientes extends javax.swing.JFrame {
   private DefaultTableModel tablaFichasPendientes;
   private ControladorGenerarFacturaPaciente controlador;
   private int seleccion = -1;
   
   public IUMostrarFichasPendientes(ControladorGenerarFacturaPaciente controlador) {
      // crea la tabla para las fichas pendientes de facturación
      this.tablaFichasPendientes = new DefaultTableModel();
      // inicializa los componentes de la GUI
      initComponents();
      // centra la GUI en la pantalla
      this.setLocationRelativeTo(null);
      // guarda el controlador con el que se comunicará la GUI
      this.controlador = controlador;
      // arma la cabecera de la tabla
      armarTabla();
   } // fin del constructor

   /** This method is called from within the constructor to
    * initialize the form.
    * WARNING: Do NOT modify this code. The content of this method is
    * always regenerated by the Form Editor.
    */
   @SuppressWarnings("unchecked")
   // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
   private void initComponents() {

      scrollPaneFichasPendientes = new javax.swing.JScrollPane();
      tablaFichasPendientesExterna = new javax.swing.JTable();
      botonVolver = new javax.swing.JButton();
      botonAceptar = new javax.swing.JButton();

      setTitle("Fichas Pendientes de Facturación");

      tablaFichasPendientesExterna.setModel(tablaFichasPendientes);
      tablaFichasPendientesExterna.setEnabled(false);
      tablaFichasPendientesExterna.setFocusable(false);
      tablaFichasPendientesExterna.setRequestFocusEnabled(false);
      tablaFichasPendientesExterna.setRowSelectionAllowed(false);
      tablaFichasPendientesExterna.setVerifyInputWhenFocusTarget(false);
      scrollPaneFichasPendientes.setViewportView(tablaFichasPendientesExterna);

      botonVolver.setText("Volver");
      botonVolver.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
            botonVolverActionPerformed(evt);
         }
      });

      botonAceptar.setText("Aceptar");
      botonAceptar.addActionListener(new java.awt.event.ActionListener() {
         public void actionPerformed(java.awt.event.ActionEvent evt) {
            botonAceptarActionPerformed(evt);
         }
      });

      javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
      getContentPane().setLayout(layout);
      layout.setHorizontalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
               .addComponent(scrollPaneFichasPendientes, javax.swing.GroupLayout.PREFERRED_SIZE, 500, javax.swing.GroupLayout.PREFERRED_SIZE)
               .addGroup(layout.createSequentialGroup()
                  .addComponent(botonVolver, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                  .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                  .addComponent(botonAceptar, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)))
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      );
      layout.setVerticalGroup(
         layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
         .addGroup(layout.createSequentialGroup()
            .addContainerGap()
            .addComponent(scrollPaneFichasPendientes, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
               .addComponent(botonVolver)
               .addComponent(botonAceptar))
            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
      );

      pack();
   }// </editor-fold>//GEN-END:initComponents

   private void botonAceptarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAceptarActionPerformed
      if(this.seleccion == -1 || this.seleccion >= this.tablaFichasPendientes.getRowCount()){
         JOptionPane.showMessageDialog(null, "Debe seleccionar una ficha");
      } // fin de if de comprobación de selección de fila
      else{
         int numFicha = Integer.parseInt(this.tablaFichasPendientes.getValueAt(seleccion, 0).toString());
         this.setVisible(false);
         this.controlador.cargarNumFicha(numFicha);
      } // fin de else de comprobación de selección de fila
   }//GEN-LAST:event_botonAceptarActionPerformed
   // fin del método botonAceptarActionPerformed
   
   private void botonVolverActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonVolverActionPerformed
      this.setVisible(false);
   }//GEN-LAST:event_botonVolverActionPerformed
   // fin del método botonVolverActionPerformed
   
   private void armarTabla(){
      this.tablaFichasPendientes.addColumn("Nº Ficha");
      this.tablaFichasPendientes.addColumn("Fecha");
      this.tablaFichasPendientes.addColumn("Paciente");
      this.tablaFichasPendientes.addColumn("Prestación");
   } // fin del método armarTabla
   
   public void cargarTabla(List<DTOFichaInternacion> listaDtoFichas){
      int fila = 0, col;
      this.tablaFichasPendientes.setRowCount(listaDtoFichas.size());
      
      for(DTOFichaInternacion dtoFicha : listaDtoFichas){
         col = 0;
         this.tablaFichasPendientes.setValueAt(dtoFicha.getNroFicha(), fila, col++);
         this.tablaFichasPendientes.setValueAt(dtoFicha.getFecha(), fila, col++);
         this.tablaFichasPendientes.setValueAt(dtoFicha.getNombrePaciente(), fila, col++);
         this.tablaFichasPendientes.setValueAt(dtoFicha.getNombrePrestacion(), fila, col++);
         fila++;
      } // fin de for de llenado de la tabla
      
      this.tablaFichasPendientesExterna.addMouseListener(new MouseAdapter(){
         @Override
         public void mouseClicked(MouseEvent e){
            seleccion = tablaFichasPendientesExterna.rowAtPoint(e.getPoint());
         } // fin del método mouseClicked
      });
   } // fin del método cargarTabla
   
   // Variables declaration - do not modify//GEN-BEGIN:variables
   private javax.swing.JButton botonAceptar;
   private javax.swing.JButton botonVolver;
   private javax.swing.JScrollPane scrollPaneFichasPendientes;
   private javax.swing.JTable tablaFichasPendientesExterna;
   // End of variables declaration//GEN-END:variables
} // fin de la clase IUMostrarFichasPendientes